package br.com.k19.repository;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;

import br.com.k19.model.Usuario;

public class UsuarioRepository {

	private EntityManager manager;

	public UsuarioRepository(EntityManager manager) {
		this.manager = manager;
	}

	public Usuario busca(Integer id) {
		return this.manager.find(Usuario.class, id);
	}

	public void adiciona(Usuario usuario) {
		this.manager.persist(usuario);
	}

	public void remove(Integer id) {
		Usuario usuario = this.manager.find(Usuario.class, id);
		this.manager.remove(usuario);
	}

	public Usuario altera(Usuario usuario) {
		return this.manager.merge(usuario);
	}

	public List<Usuario> lista() {
		TypedQuery<Usuario> query = this.manager.createQuery("select u from Usuario u", Usuario.class);
		return query.getResultList();
	}

	public boolean existeUsernameEPassword(String username, String password) {
		String sql = "SELECT u FROM Usuario u WHERE u.username = :username AND u.password = :password";
		TypedQuery<Usuario> query = manager.createQuery(sql, Usuario.class);
		query.setParameter("username", username);
		query.setParameter("password", password);

		return !query.getResultList().isEmpty();
	}
}
